<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
    <style>
        table{
            border-spacing: 0;
        }
        th,td{
            width: 100px;
            height: 50px;
            
        }
    </style>
</head>
<body>
    <p>用户名: <input type="text" class="yhm"></p>
    <p>年龄: <input type="text" class="nl"></p>
    <button onclick="add()">添加</button>
    <table border="1">
        <thead>
            <tr>
                <th>全选<input type="checkbox" class="qx" ></th>
                <th>用户名</th>
                <th>年龄</th>
                <th>操作</th>
            </tr>
        </thead>
        <tbody>
            <tr>
                
            </tr>
        </tbody>
    </table>
</body>
</html>
<script>
    //1.获取页面
    var yhm=document.querySelector('.yhm')
    var nl=document.querySelector('.nl')
    var tbody=document.querySelector('tbody')
    var qx=document.querySelector('.qx')
    
    //2.获取数据
    function qu(){
        var obj= localStorage.getItem('data')
        if(obj!=null){
            return JSON.parse(obj)
        }else{
            return []
        }
    }
    //3.存储数据
    function cun(data){
        localStorage.setItem('data',JSON.stringify(data))
    }

    //取得数据添加到本地
    function add(){
        //1.取数据
        var shuju=qu()
        //2.操作数据
        shuju.push({
            uname:yhm.value,
            age:nl.value
        })
        //3.更新数据、存本地
        cun(shuju)
        yhm.value=''
        nl.value=''
        //4.渲染
        xr()
    }
    function xr(){
        tbody.innerHTML=''
        //取得数据
        var shuju=qu()
        //for循环渲染
        for(i=0;i<shuju.length;i++){
            //1.创建
            var tr=document.createElement('tr')
            //2.赋值
            if(qx.checked){
                tr.innerHTML=`
                <td><input type="checkbox" class="fx" checked></td>
                <td>${shuju[i].uname}</td>
                <td>${shuju[i].age}</td>
                <td><button onclick="del(${i})">删除</button></td>
            `;
            }else{
                tr.innerHTML=`
                <td><input type="checkbox" class="fx"></td>
                <td>${shuju[i].uname}</td>
                <td>${shuju[i].age}</td>
                <td><button onclick="del(${i})">删除</button></td>
            `;
            }
            //3.添加节点
            tbody.appendChild(tr)
        }
    }
    function del(aaa){
        //1.取数据
        var shuju=qu()
        //2.操作数据(删除)
        shuju.splice(aaa,1)
        //3.更新数据
        cun(shuju)
        //4.渲染
        xr()
    }
        //给全选添加事件
        qx.onclick=function(){
        var fxk=document.querySelectorAll('.fx')
        //将全选状态赋值给每一个复选框
        for(i=0;i<fxk.length;i++){
            fxk[i].checked=qx.checked
        }
    }
    //循环遍历给每一个复选框添加事件
    var fxk=document.querySelectorAll('.fx')
    for(i=0;i<fxk.length;i++){
        ints[i].onclick=function(){
            // var fxk=document.querySelectorAll('.fx')
            //取出复选框状态为选中的元素
            var xz_ints=document.querySelectorAll('.fx:checked')

            if(fxk.length==xz_ints.length){
                qx.checked=true
            }else{
                qx.checked=false
            }
        }
    }
    xr()
</script>